/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.misena.praxispraktik.recursos;

import com.misena.praxispraktik.entity.*;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Response;

/**
 *
 * @author diana
 */
@Stateless
@Path("/practica")
public class PracticasRest {

    Practicas practica;
    //Gruposaprendices gruposaprendices;
    Modalidad modalidad;
    Empresas empresa;
    Jefes jefe;
   // Aprendices aprendices;
    
    
    EntityManagerFactory emf = null;
    EntityManager em = null;

    @GET
    @Produces("application/json")
    public Practicas consultar(@QueryParam("id") Integer id) {
        //public String consultar(@QueryParam("id") Integer id){
        //public String consultar(){
        try {
            emf = obtenerEntityManagerFactory();
            em = obtenerEntityManager(emf);
            practica = em.find(Practicas.class, id);

        } catch (Exception e) {
             e.printStackTrace();
        } finally {
            em.close();
            emf.close();
        }
        System.out.println("Fin Consulta");

        System.out.println(practica.getIdPracticas() + " " + practica.getIdEmpresas());

        return practica;
    }

    @POST
    @Consumes("application/json")
    public Response guardar(Practicas a,@QueryParam("idAprendices") Integer idAprendices, @QueryParam("idEmpresas") Integer idEmpresas ,@QueryParam("idModalidad") Integer idModalidad ,@QueryParam("idJefes") Integer idJefes) {
        practica = a;
        
        try {
            emf = obtenerEntityManagerFactory();
            em = obtenerEntityManager(emf);
            
            //gruposaprendices=obtenerGruposaprendices(idGruposAprendices);
            //practica.setIdGruposAprendices(gruposaprendices);
            //aprendices=obteneraprendices(idAprendices);
           // practica.setIdAprendices(aprendices);
                    
            
            
            modalidad=obtenerModalidad(idModalidad);
            practica.setIdModalidad(modalidad);
            
            empresa=obtenerEmpresa(idEmpresas);
            practica.setIdEmpresas(empresa);
            
            jefe=obtenerJefes(idJefes);
            practica.setIdJefes(jefe);
            
            em.persist(a);
           

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            em.close();
            emf.close();
        }
        System.out.println("Fin de la inserción");

        return Response.ok().build();
    }

    /**
     *
     * @param a
     * @return
     */
    @PUT
    @Consumes("application/json")
    public Response actualizar(Practicas a) {
        practica = a;
        //cliente = p;
        //return Response.ok(p).build();

        try {
            emf = obtenerEntityManagerFactory();
            em = obtenerEntityManager(emf);
            em.merge(a);

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            em.close();
            emf.close();
        }
        System.out.println("Fin de la actualización");

        return Response.ok().build();
    }

    @DELETE
    @Consumes("application/json")
    public Response Eliminar(@QueryParam("id") Integer id) {

        try {
            emf = obtenerEntityManagerFactory();
            em = obtenerEntityManager(emf);
            practica = em.find(Practicas.class, id);

            if (!practica.getIdPracticas().equals(null)) {
                em.remove(practica);
            } else {
                return Response.noContent().build();
            }



        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            em.close();
            emf.close();
        }
        System.out.println("Fin de la eliminación");
        return Response.ok().build();
    }

    public EntityManagerFactory obtenerEntityManagerFactory() {

        return Persistence.createEntityManagerFactory("PraxisPraktikPU");
    }

    public EntityManager obtenerEntityManager(EntityManagerFactory emf) {

        return emf.createEntityManager();
    }
   /* public Gruposaprendices obtenerGruposaprendices(Integer idGruposaprendices){
         emf = obtenerEntityManagerFactory();
         em = obtenerEntityManager(emf);
         return em.find(Gruposaprendices.class, idGruposaprendices);
         
    }*/
    
    public Aprendices obteneraprendices(Integer idaprendices){
         emf = obtenerEntityManagerFactory();
         em = obtenerEntityManager(emf);
         return em.find(Aprendices.class, idaprendices);
         
    }
    
     public Empresas obtenerEmpresa(Integer idEmpresas){
         emf = obtenerEntityManagerFactory();
         em = obtenerEntityManager(emf);
         return em.find(Empresas.class, idEmpresas);
    }
     public Modalidad obtenerModalidad(Integer idModalidad){
         emf = obtenerEntityManagerFactory();
         em = obtenerEntityManager(emf);
         return em.find(Modalidad.class, idModalidad);
    }
     public Jefes obtenerJefes(Integer idJefes){
         emf = obtenerEntityManagerFactory();
         em = obtenerEntityManager(emf);
         return em.find(Jefes.class, idJefes);
    }
}

